/**
 * describe:
 *
 * @author chaP
 * @date 2019/03/25
 */
package CodingTest.AC20190324;

import java.util.Arrays;
import java.util.Scanner;

/**
 *题目描述
 * (网易2018笔试)
 小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
 1、将a_i放入b序列的末尾
 2、逆置b序列
 小易需要你计算输出操作n次之后的b序列。
 输入描述:
 输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
 第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。
 输出描述:
 在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
 示例1
 输入

 4
 1 2 3 4
 输出

 4 2 1 3
 */
public class OperationSequence {
    //暴力法 过50% 超时
    public int[] Main1(int n,int[] nums){
        int[] b = new int[n];
        for(int i=0;i<n;i++){
                b[i] = nums[i];
                reverse(b,0,i);
        }
        return b;
    }
    public void reverse(int[] nums,int start,int end){
    while(start<end){
        int temp = nums[start];
        nums[start++] = nums[end];
        nums[end--] = temp;

    }}

    //网上思路，找规律
//        首先从最后一个数开始，从后向前输出，每次都跳过一个，即5 3 1
//
//        然后从前向后输出，每次都跳过一个，即2 4
//
//        有一点需要注意，奇序列和偶序列有点区别，在从前向后输出时，奇序列从第二个数开始，偶序列从第一个开始，需要区别对待重点内容。
    public int[] Main2(int n,int[] nums){
        int[] b = new int[n];
        int end = n-1;
        if(n%2==0){ //偶序列
            int i =0,j=0;
            while(end >=0){
                b[i] = nums[end];
                end = end-2;
                i++;
            }
            while(j<n){
                b[i] = nums[j];
                j+=2;
                i++;
            }
        }else{
            int i =0,j=1;
            while(end >= 0){
                b[i] = nums[end];
                end = end-2;
                i++;
            }
            while(j<n){
                b[i] = nums[j];
                j+=2;
                i++;
            }
        }
        return b;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for(int i =0;i<n;i++){
            nums[i] = sc.nextInt();
        }
        OperationSequence os = new OperationSequence();
        int[] result = os.Main2(n,nums);
        for(int j = 0;j<n;j++){
            System.out.print(result[j]);
            System.out.print(" ");
        }
    }
}
